package com.universalInterface.config.openapi;

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author Lx
 * @date 2023/12/9 17:34
 * @description springdoc openapi3（swagger3）配置
 * <br/> 官网：https://springdoc.org/
 */
@Configuration
public class OpenApiConfig {

	@Bean
	public OpenAPI openAPI() {
		return new OpenAPI()
				// .components()配置见：https://springdoc.org/#how-do-i-add-authorization-header-in-requests
				// 接口文档标题
				.info(new Info().title("Knife4j OpenApi 3 接口文档API")
						// 接口文档描述
						.description("本文档描述了接口定义规范")
						// 接口文档版本
						.version("v1.0")
						// 开发者信息
						.contact(new Contact().name("......").url("......"))
						// 参考 Apache 2.0 许可及地址
						.license(new License().name("Apache 2.0").url("https://www.apache.org/licenses/LICENSE-2.0.html"))
				)
				// 引入外部的文档。springdoc 官方文档地址
				.externalDocs(new ExternalDocumentation()
						.description("SpringDoc Full Documentation")
						.url("https://springdoc.org/")
				);
	}

	/**
	 * GroupedOpenApi 是对接口文档分组
	 */
	@Bean
	public GroupedOpenApi defaultApi() {
		return GroupedOpenApi.builder()
				// 组名
				.group("default")
				// 扫描的路径，支持通配符
				.pathsToMatch("/**")
				// 扫描的包
				// .packagesToScan("org.luoxu.controller")
				.build();
	}

}
